#ifndef SDMP_CMD_LOOKUP_H
#define SDMP_CMD_LOOKUP_H

#include <stddef.h>

/* 定义 hlist 节点和头结构 */
struct hlist_node {
    struct hlist_node *next, **pprev;
};

struct hlist_head {
    struct hlist_node *head;
};

/* SDMP 命令编码枚举 */
typedef enum sdmp_cmd_code {
    SDMP_CMD_CODE_UNKNOWN = 0,
    SDMP_CMD_CODE_REGISTER = 1001,    // 设备注册
    SDMP_CMD_CODE_KEEPALIVE = 1002,   // 设备心跳
    SDMP_CMD_CODE_TRANSDOWN = 2011,   // 透传下行
    SDMP_CMD_CODE_TRANSUP = 2012,     // 透传上行
    SDMP_CMD_CODE_MAX
} sdmp_cmd_code_t;

// 命令结构体
typedef struct sdmp_cmd_code_str {
    int code;
    char *str;
} sdmp_cmd_code_str_t;

/**
 * @brief 初始化 SDMP 命令查找模块
 *
 * @return 0 on success, negative on failure
 */
int sdmp_cmd_lookup_init(void);

/**
 * @brief 根据命令字符串查找命令编码
 *
 * @param cmd_str 命令字符串
 * @return 对应的命令编码，失败返回 SDMP_CMD_CODE_UNKNOWN
 */
sdmp_cmd_code_t sdmp_cmd_code_lookup(const char *cmd_str);

/**
 * @brief 清理 SDMP 命令查找模块
 */
void sdmp_cmd_lookup_destroy(void);

#endif /* SDMP_CMD_LOOKUP_H */